package com.study;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class HelloProducer {


    public static void main(String[] args) throws IOException, TimeoutException {
        //1，获取连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();

        //设置host名
        connectionFactory.setHost("192.168.181.131");
        connectionFactory.setVirtualHost("/");
        //用户名
        connectionFactory.setUsername("root");
        //密码
        connectionFactory.setPassword("123456");
        //端口号
        connectionFactory.setPort(5672);

        //2,从连接工厂获取一个连接
        Connection connection = connectionFactory.newConnection();
        //获取通道
        Channel channel = connection.createChannel();
        //3,声明一个消息队列
        /*
        * 参数1：消息队列名
        * 参数2：消息是否持久化
        * 参数3：消息是否排他
        * 参数4：是否自动删除
        * 参数5，消息内容
        * 参数一般使用默认的即可
        * */
        channel.queueDeclare("queue.biz",false,false,true,null);

        //4,声明一个交换器
        /*
         *参数1：交换器名称
        * 参数2：交换器类型，emun类
        * 参数3：交换器是否持久化的
        * 参数4：是否自动删除
        * 参数5，交换器内容
        * 参数一般使用默认的即可
        * */
        channel.exchangeDeclare("ex.biz", BuiltinExchangeType.DIRECT,false,false,null);


        //5,交换器与消息队列进行绑定,并制定路由key
        channel.queueBind("queue.biz","ex.biz","hello.world");


        //6,发送消息到rabbitmq中
        /*
        * 参数1：交换器名称
        * 参数2：路由key
        * 参数3：交换器名称
        * 参数4：内容实体（byte数组）
        * */
        channel.basicPublish("ex.biz","hello.world",null,"hello,world1".getBytes());

        //7,关闭通道
        channel.close();
        //8,关闭连接
        connection.close();
    }




}
